package com.rran.study.algorithm.medium.day02;

/**
 * @author yy
 * @Type Solution.java
 * @Desc 给定一个字符串，请你找出其中不含有重复字符的 最长子串 的长度。
 * 输入: "abcabcbb"
 * 输出: 3
 * 解释: 因为无重复字符的最长子串是 "abc"，所以其长度为 3。
 * <p>
 * 输入: "bbbbb"
 * 输出: 1
 * 解释: 因为无重复字符的最长子串是 "b"，所以其长度为 1。
 * <p>
 * 输入: "pwwkew"
 * 输出: 3
 * 解释: 因为无重复字符的最长子串是 "wke"，所以其长度为 3。
 *      请注意，你的答案必须是 子串 的长度，"pwke" 是一个子序列，不是子串。
 *
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/average-of-levels-in-binary-tree
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 * @date 2020/9/4
 */
public class Solution {

    private int max = 1;

    public static void main(String[] args) {
        Solution solution = new Solution();
        String str = "pwwkew";
        System.out.println(solution.lengthOfLongestSubstring(str));
    }

    public int lengthOfLongestSubstring(String s) {
        if("".equals(s)){
            return 0;
        }
        int start = 0;
        int last = s.length();

        for (int i = 0; i < last; i++) {
            //选取的值
            StringBuilder sb = new StringBuilder();
            int j = i;
            int max = 1;
            while (j - 1 >= start) {
                sb.append(s.charAt(j));
                char c = s.charAt(j-1);
                if (sb.toString().contains(String.valueOf(c))) {
                    break;
                }
                sb.append(c);
                max++;
                j--;
            }
            j = i;
            while (j + 1 < last) {
                sb.append(s.charAt(j));
                char c = s.charAt(j+1);
                if (sb.toString().contains(String.valueOf(c))) {
                    break;
                }
                sb.append(c);
                max++;
                j++;
            }
            if(max > this.max){
                this.max = max ;
            }
        }
        return max;
    }
}
